#include <iostream>
//#include "mathex.h";
#include "b.h"
//#include "method.h"  //第二种 ，不需要头文件的调用
using namespace std;
using namespace cn;
//枚举
enum DAY{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};

// void f1(int a,int b=1,int c=0);

#define PI 3.1415 //定义宏
#define M(a,b) a*b //宏名（参数表) 宏体
/**
 * 条件编译
*/
//#define DEBUG
// void f1(int a,int b,int c);
// void f1(int a,int b,int c=0);
// void f1(int a,int b=1,int c=0);
void fun10(int,int,int);
void fun10(int a,int b,int c=0);

int max(int,int); //第二种调用

//声明函数
// double factorial(int n);
// bool isDigitalChar(char);
/*无命名空间*/
namespace{
    int x,y;
    void fun(){
        cout<<"aaaa"<<endl;
    }
}


int main(){
    fun();
    int x=0,y=1,z=2;
    fun10(x,y,z);
    fun10(x,y);
    
    // int a=13,b=14;
    // cout<<max(a,b)<<endl;
    // cout<<math::global<<endl;
    // cout<<math::add(1,2)<<endl;
    // cout<<math::factorial(10)<<endl;

    //cout<<sub(10,10)<<endl;


    // cout<<PI<<endl;
    // cout<<"M="<<M(4,5)<<endl;

    // fun();

    //宏，条件编译
    // int x=10,y=20;
    // #ifndef DEBUG
    //     cout<<"x="<<x<<",y="<<y<<endl;
    // #endif
    //     cout<<x*y<<endl;

    // #ifndef RUN
    //     cout<<"x="<<x<<",y="<<y<<endl;
    // #endif
    //     cout<<x*y<<endl;

    //枚举
    // DAY d;
    // int i;

    // cout<<"输入星期:";
    // cin>>i;
    // if(i<1||i>7){
    //     cout<<"输入错误"<<endl;
    //     return 1;
    // }
    // else{
    //     d=(DAY)i;
    // }
    // cout<<"你的输入是:";
    // switch(d){
    //     case SUN:cout<<"星期日"<<endl;break;
    //     case MON:cout<<"星期一"<<endl;break;
    //     case TUE:cout<<"星期二"<<endl;break;
    //     case WED:cout<<"星期三"<<endl;break;
    //     case THU:cout<<"星期四"<<endl;break;
    //     case FRI:cout<<"星期五"<<endl;break;
    //     case SAT:cout<<"星期六"<<endl;break;
    // }
    return 0;
}



/**
 * 函数，需要函数声明
*/
//给定n的值，编写一个n!的函数
double factorial(int n){
    double f=1;
    for(int i=2;i<n;i++){
        f*=i;
    }
    return f;
}

//判断某个给定的字符是否是数字字符
bool isDigitalChar(char a){
    if(a>='0' && a<='9'){
        return true;
    }else{
        return false;
    }
}

/**函数声明的作用域*/
void h(){
    //g(10); //错误
}
int incr(int a){
    a++;
    return a;
}

void g(int a){
    cout<<a;
}

/**
 * 内部函数和外部函数
*/
//外部函数，extern 表示函数为外部函数


//递归函数
/**
 * 编写计算n阶勒让德多项式的值的递归函数
*/
double poly(int n,double x){
    if(n==0){
        return 1;
    }
    if(n==1){
        return x;
    }
    return ((2*n-1)*poly(n-1,x)-(n-1)*poly(n-2,x))/n;
}


/**
 * n!
*/
int f(int n){
    if(n==0){
        return 1;
    }
    else{
        return n*f(n-1);
    }
}

/**
 * 重载函数
*/
//带默认参数值形参
void fun10(int a,int b,int c){
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"c="<<c<<endl;
}